package ace.module.weixin.core.impl.manager;

import ace.cmp.data.spring.data.jdbc.querydsl.rsql.core.manager.DtoManager;
import ace.module.weixin.api.model.dto.WxsCacheDto;
import ace.module.weixin.core.impl.dao.entity.WxsCache;
import java.util.Optional;

/**
 * 微信缓存数据,保存accessToken、ticket等有时效数据 spring data jdbc querydsl rsql manager.
 *
 * @author Caspar
 */
public interface WxsCacheManager extends DtoManager<WxsCache, Long, WxsCacheDto> {


  Optional<WxsCache> getByKeyFromDbOrCache(String key);

  void removeDbAndCacheByKey(String key);

  void saveOrUpdate(String key, long expireInMills, Object value);

  <T> Optional<T> getValueByKeyFromDbOrCache(String key, Class<T> cls);
}